package com.easylinkin.linkappapi.airconditioner.entity;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.easylinkin.linkappapi.deviceattributestatus.entity.DeviceAttributeStatus;
import com.easylinkin.linkappapi.devicetype.entity.DeviceType;
import com.easylinkin.linkappapi.space.entity.LinkappSpace;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.io.Serializable;
import java.util.List;

/**
 * class info :
 *
 * @author liuqihang
 * @date 2021/5/8 14:24
 */
@Data
public class AirDevice extends Model<AirDevice> {

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @TableId
    private String id;
    /**
     * 设备编码
     */
    @TableField("code")
    @Length(max = 32, message = "code超长")
    private String code;

    /**
     * 设备名称
     */
    @TableField("name")
    @Length(max = 32, message = "name超长")
    private String name;

    /**
     * 设备状态,0:正常; 1:告警；新增默认：正常
     */
    @TableField("status")
    private Integer status;

    /**
     * 是否删除字段 0:已删; 1:存在
     */
    @TableLogic(value = "1", delval = "0")
    private Integer deleteState = 1;

    /**
     * 默认1-存在 0- 删除
     */
    @TableField("linkthing_delete")
    private Integer linkthingDelete;

    /**
     * 0:离线; 1:在线 新增默认离线
     */
    @TableField("online_state")
    private Integer onlineState;

    /**
     * 设备型号
     */
    @Length(max = 32, message = "型号id超长")
    private String deviceUnitId;


    /**
     * 区域ID
     */
    @Length(max = 32, message = "区域id超长")
    @TableField(strategy = FieldStrategy.IGNORED)
    private String areaId;

    /**
     * 区域层级路径
     */
    @Length(max = 255, message = "区域路径超长")
    @TableField(strategy = FieldStrategy.IGNORED)
    private String areaPath;

    /**
     * 租户ID
     */
    @Length(max = 32)
    private String tenantId;

    /**
     * 空间名称（前端显示）
     */
    @TableField(exist = false)
    private String spaceName;

    /**
     * 空间
     */
    @TableField(exist = false)
    private LinkappSpace linkappSpace;

    /**
     * 区域（前端显示）
     */
    @TableField(exist = false)
    private String areaName;
    /**
     * 设备类型名称（前端显示）
     */
    @TableField(exist = false)
    private String deviceTypeName;

    @TableField(exist = false)
    private DeviceType deviceType;

    /**
     * 型号名称（前端显示用）
     */
    @TableField(exist = false)
    private String deviceUnitName;

    /**
     * 型号编号（前端显示用）
     */
    @TableField(exist = false)
    private String deviceUnitCode;

    /**
     * 设备型号版本号（前端显示用）
     */
    @TableField(exist = false)
    private String deviceUnitVersion;

    private Integer timerFlag;//是否定时标识 0:否, 1:是

    private Integer airDeviceStatus;//0:正常，1:开机，2:故障，3:锁定，4:关机

    /**
     * 设备属性状态 实时
     */
    @TableField(exist = false)
    private List<AirDeviceAttributeStatus> deviceAttributeStatusList;

    @Override
    protected Serializable pkVal() {
        return this.code;
    }

}
